Test return value of fread for EOF and other error detection.
authorrobertl <robertl>
Fri, 30 Jun 2006 13:24:49 +0000 (13:24 +0000)
committerrobertl <robertl>
Fri, 30 Jun 2006 13:24:49 +0000 (13:24 +0000)
saroute.c

index bbef33c05d13e098e88fcfb21e46c050a68dfea7..19a454d8233b9e6e2d2a511aa4202cb2d8f1c1f0 100644 (file)
--- a/saroute.c
+++ b/saroute.c
@@ -58,7 +58,9 @@ ReadShort(FILE * f)
 {
        gbuint16 result = 0;
 
-       fread(&result, sizeof (result), 1, f);
+       if (!fread(&result, sizeof (result), 1, f)) {
+               fatal(MYNAME ": Attempt to read past EOF");
+       }
        return le_read16(&result);
 }
 
@@ -67,7 +69,8 @@ ReadLong(FILE * f)
 {
        gbuint32 result = 0;
 
-       fread(&result, sizeof (result), 1, f);
+       if (!fread(&result, sizeof (result), 1, f))
+               fatal(MYNAME ": Attempt to read past EOF");
        return le_read32(&result);
 }
 
@@ -77,7 +80,8 @@ ReadRecord(FILE * f,
 {
        unsigned char *result = (unsigned char *) xmalloc(size);
 
-       fread(result, size, 1, f);
+       if (!fread(result, size, 1, f))
+               fatal(MYNAME ": Attempt to read past EOF");
        return result;
 }